home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / machserver / include / user / RCS / stdlib.h,v < prev    next >
Encoding:
Text File  |  1992-07-17  |  7.5 KB  |  293 lines

  1. head     1.4;
  2. branch   ;
  3. access   ;
  4. symbols  srv030:1.4 srv027:1.4 srv026:1.4 srv024:1.4 srv021:1.4 srv019:1.4 srv018:1.4 srv016:1.4 srv014:1.4 srv010:1.4 srv008:1.4 srv007:1.4 srv006:1.4 srv005:1.4 srv004:1.4 srv003:1.4 srv002:1.4 srv001:1.4;
  5. locks    ; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.4
  10. date     91.12.12.22.24.31;  author kupfer;  state Exp;
  11. branches ;
  12. next     1.3;
  13.  
  14. 1.3
  15. date     91.10.07.14.12.36;  author kupfer;  state Exp;
  16. branches ;
  17. next     1.2;
  18.  
  19. 1.2
  20. date     91.10.04.11.54.40;  author kupfer;  state Exp;
  21. branches ;
  22. next     1.1;
  23.  
  24. 1.1
  25. date     91.09.25.16.49.56;  author kupfer;  state Exp;
  26. branches ;
  27. next     ;
  28.  
  29.  
  30. desc
  31. @@
  32.  
  33.  
  34. 1.4
  35. log
  36. @Fix declarations for free() to be ANSI-compatible.
  37. @
  38. text
  39. @/*
  40.  * stdlib.h --
  41.  *
  42.  *    Declares facilities exported by the "stdlib" portion of
  43.  *    the C library.
  44.  *
  45.  * Copyright 1988 Regents of the University of California
  46.  * Permission to use, copy, modify, and distribute this
  47.  * software and its documentation for any purpose and without
  48.  * fee is hereby granted, provided that the above copyright
  49.  * notice appear in all copies.  The University of California
  50.  * makes no representations about the suitability of this
  51.  * software for any purpose.  It is provided "as is" without
  52.  * express or implied warranty.
  53.  *
  54.  * $Header: /r3/kupfer/spriteserver/include/user/RCS/stdlib.h,v 1.3 91/10/07 14:12:36 kupfer Exp Locker: kupfer $ SPRITE (Berkeley)
  55.  */
  56.  
  57. #ifndef _STDLIB
  58. #define _STDLIB
  59.  
  60. /* 
  61.  * sprite.h is needed for typedefs that are used in some function
  62.  * prototypes.  Unfortunately, some user programs define conflicting
  63.  * typedefs.  Because many programs probably include stdlib.h, we
  64.  * should give advance warning before forcing users to use the
  65.  * typedefs from sprite.h.  This must be done before we can turn on
  66.  * function prototypes for Sprite user programs.  (Or, change the 
  67.  * prototypes so that they don't use the Sprite typedefs.)
  68.  */
  69. #include <cfuncproto.h>
  70.  
  71. #if defined(KERNEL) || defined(SPRITED)
  72. #include <sprite.h>
  73. #include <sys/types.h>
  74. #endif
  75.  
  76. #define EXIT_SUCCESS    0
  77. #define EXIT_FAILURE    1
  78.  
  79. #if defined(_HAS_PROTOTYPES) && !defined(_SIZE_T)
  80. #define _SIZE_T
  81. /* size_t is also defined in sys/types.h, stddef.h, and unistd.h. */
  82. typedef    int    size_t;
  83. #endif
  84.  
  85. /*
  86.  *----------------------------
  87.  * String conversion routines:
  88.  *----------------------------
  89.  */
  90.  
  91. _EXTERN double     atof _ARGS_((_CONST char *string));
  92. _EXTERN int     atoi _ARGS_((_CONST char *string));
  93. _EXTERN long int atol _ARGS_((_CONST char *string));
  94. _EXTERN double     strtod _ARGS_((_CONST char *string, char **endPtr));
  95. _EXTERN long int strtol _ARGS_((_CONST char *string, char **endPtr, int base));
  96. _EXTERN unsigned long int
  97.         strtoul _ARGS_((_CONST char *string, char **endPtr, int base));
  98.  
  99. /*
  100.  *------------------
  101.  * Memory allocator:
  102.  *------------------
  103.  */
  104.  
  105. /* 
  106.  * (Many of the "char *"s should be "Address".  See the above comments 
  107.  * about sprite.h.)
  108.  */
  109.  
  110. #ifdef KERNEL
  111.  
  112. _EXTERN Address    malloc _ARGS_((unsigned int bytesNeeded));
  113.  
  114. /*
  115.  * The mips compiler cannot handle some coercions on the left hand side.
  116.  */
  117. #ifndef mips
  118.  
  119. _EXTERN void    _free _ARGS_((Address blockPtr));
  120.  
  121. #ifdef lint
  122. #define        free(ptr) _free(ptr)
  123. #else
  124. #define        free(ptr) {_free(ptr); (ptr) = (Address) NIL; }
  125. #endif /* lint */
  126.  
  127. #else /* mips */
  128.  
  129. _EXTERN void    free _ARGS_((Address blockPtr));
  130.  
  131. #endif /* mips */
  132.  
  133. #else /* KERNEL */
  134.  
  135. _EXTERN _VoidPtr    malloc _ARGS_((unsigned int bytesNeeded));
  136. _EXTERN void    free _ARGS_((_VoidPtr blockPtr));
  137.  
  138. #endif /* KERNEL */
  139.  
  140. _EXTERN _VoidPtr    alloca _ARGS_((int size));
  141. _EXTERN _VoidPtr calloc _ARGS_((unsigned int numElems, unsigned int elemSize));
  142. _EXTERN _VoidPtr    realloc _ARGS_((_VoidPtr ptr, unsigned int newSize));
  143. _EXTERN void    Mem_Bin _ARGS_((int numBytes));
  144. _EXTERN char *    Mem_CallerPC();
  145. _EXTERN void    Mem_DumpTrace _ARGS_((int blockSize));
  146. _EXTERN void    Mem_PrintConfig _ARGS_((void));
  147. _EXTERN void    Mem_PrintInUse _ARGS_((void));
  148. _EXTERN void    Mem_PrintStats _ARGS_((void));
  149. _EXTERN void    Mem_PrintStatsInt _ARGS_((void));
  150. /* 
  151.  * The "proc" argument to Mem_SetPrintProc is a varargs function, 
  152.  * so we have delayed declaring the correct prototype for it.
  153.  */
  154. _EXTERN void    Mem_SetPrintProc _ARGS_((void (*proc)(), ClientData data));
  155. _EXTERN int    Mem_Size _ARGS_((Address blockPtr));
  156.  
  157. /*
  158.  * Structure used to set up memory allocation traces.
  159.  */
  160.  
  161. typedef struct {
  162.     int        size;    /* Size of block to trace. */
  163.     int        flags;    /* Flags defined below */
  164. } Mem_TraceInfo;
  165.  
  166. _EXTERN void    Mem_SetTraceSizes _ARGS_((int numSizes,
  167.                       Mem_TraceInfo *arrayPtr));
  168. /*
  169.  * Flags to determine what type of tracing to do.
  170.  *
  171.  *    MEM_PRINT_TRACE        A trace record will be printed each time that
  172.  *                an object of this size is alloc'd or freed.
  173.  *    MEM_STORE_TRACE        The number of blocks in use by each caller
  174.  *                up to a predefined maximum number of callers
  175.  *                is kept in a trace array .
  176.  *    MEM_DONT_USE_ORIG_SIZE    Don't use the original size for tracing, but use
  177.  *                the modified size used by malloc.
  178.  *    MEM_TRACE_NOT_INIT    The trace records stored for MEM_STORE_TRACE
  179.  *                have not been initialized yet.
  180.  */
  181.  
  182. #define    MEM_PRINT_TRACE        0x1
  183. #define    MEM_STORE_TRACE        0x2
  184. #define    MEM_DONT_USE_ORIG_SIZE    0x4
  185. #define    MEM_TRACE_NOT_INIT    0x8
  186.  
  187. extern int    mem_SmallMinNum;
  188. extern int    mem_LargeMinNum;
  189. extern int    mem_LargeMaxSize;
  190.  
  191. /*
  192.  * Statistics counters;  only incremented when tracing is enabled.
  193.  */
  194.  
  195. extern int    mem_NumAllocs;
  196. extern int    mem_NumFrees;
  197.  
  198. /*
  199.  *----------------------------------------------------------------
  200.  * Additional integer math routines, plus structures for returning
  201.  * results from them:
  202.  *----------------------------------------------------------------
  203.  */
  204.  
  205. typedef struct div_t {
  206.     int quot;
  207.     int rem;
  208. } div_t;
  209.  
  210. typedef struct {
  211.     long int quot;
  212.     long int rem;
  213. } ldiv_t;
  214.  
  215. _EXTERN int    abs _ARGS_((int j));
  216. _EXTERN div_t    div _ARGS_((int numer, int denom));
  217. _EXTERN long int labs _ARGS_((long j));
  218. _EXTERN ldiv_t    ldiv _ARGS_((long int numer, long int denom));
  219.  
  220. /*
  221.  *-----------------------------------
  222.  * Miscellaneous additional routines:
  223.  *-----------------------------------
  224.  */
  225.  
  226. _EXTERN void    abort _ARGS_((void));
  227. _EXTERN int    atexit _ARGS_((void (*func)(void)));
  228. _EXTERN _VoidPtr bsearch _ARGS_((_CONST _VoidPtr key, _CONST _VoidPtr base,
  229.         size_t n, size_t size,
  230.     int (*cmp)(_CONST _VoidPtr searchKey, _CONST _VoidPtr tableEntry)));
  231. _EXTERN void    exit _ARGS_((int status));
  232. _EXTERN char *    getenv _ARGS_((char *name));
  233. _EXTERN void    qsort _ARGS_((_VoidPtr base, int n, int size,
  234.       int (*compar)(_CONST _VoidPtr element1, _CONST _VoidPtr element2)));
  235. _EXTERN int    rand _ARGS_((void));
  236. _EXTERN long    random _ARGS_((void));
  237. _EXTERN void    setenv _ARGS_((_CONST char *name, _CONST char *value));
  238. _EXTERN void    srand _ARGS_((int seed));
  239. _EXTERN void    srandom _ARGS_((int seed));
  240. _EXTERN int    system _ARGS_((_CONST char *command));
  241.  
  242. #endif /* _STDLIB */
  243. @
  244.  
  245.  
  246. 1.3
  247. log
  248. @Include sprite.h & types.h for Sprite server as well as kernel.
  249. @
  250. text
  251. @d16 1
  252. a16 1
  253.  * $Header: /r3/kupfer/spriteserver/include/user/RCS/stdlib.h,v 1.2 91/10/04 11:54:40 kupfer Exp Locker: kupfer $ SPRITE (Berkeley)
  254. d91 1
  255. a91 1
  256. _EXTERN int    free _ARGS_((Address blockPtr));
  257. d98 1
  258. a98 1
  259. _EXTERN int    free _ARGS_((_VoidPtr blockPtr));
  260. @
  261.  
  262.  
  263. 1.2
  264. log
  265. @exit(), srand(), and srandom() return void, not int.
  266. @
  267. text
  268. @d16 1
  269. a16 1
  270.  * $Header: /r3/kupfer/spriteserver/include/user/RCS/stdlib.h,v 1.1 91/09/25 16:49:56 kupfer Exp Locker: kupfer $ SPRITE (Berkeley)
  271. d33 1
  272. a33 1
  273. #ifdef KERNEL
  274. @
  275.  
  276.  
  277. 1.1
  278. log
  279. @Initial revision
  280. @
  281. text
  282. @d16 1
  283. a16 1
  284.  * $Header: /sprite/src/lib/include/RCS/stdlib.h,v 1.18 90/11/27 11:24:17 ouster Exp Locker: rab $ SPRITE (Berkeley)
  285. d193 1
  286. a193 1
  287. _EXTERN int    exit _ARGS_((int status));
  288. d200 2
  289. a201 2
  290. _EXTERN int    srand _ARGS_((int seed));
  291. _EXTERN int    srandom _ARGS_((int seed));
  292. @
  293.